package com.tx.review.generic;

/**
 * 测试泛型接口
 * @version:
 */
public class Test02 {
    public static void main(String[] args) {
        //测试方式1：
        Animal dog = new Dog();
        System.out.println(dog.getMsg());

        //测试方式2：
//        Animal<String> pig = new Pig<String>(10);
        Animal<Integer> pig = new Pig<>(10);
        System.out.println(pig.getMsg());
    }
}

interface Animal<T>{
    T getMsg();
}

//方式1： 在实现中，指定接口的类型
class Dog implements Animal<String>{
    @Override
    public String getMsg() {
        return "哈哈哈哈哈";
    }
}

//方式2： 在实现中，保持和接口一致，还是使用泛型,之后在初始化Pig时，传入参数
class Pig<T> implements Animal<T>{
    T t;

    public Pig(T t) {
        this.t = t;
    }

    @Override
    public T getMsg() {
        return t;
    }
}
